home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Educational / HodgePodge3 / Source / AreaRule.m < prev    next >
Encoding:
Text File  |  1995-06-12  |  1.5 KB  |  77 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import "math.h"
  5. #import "AreaRule.h"
  6. float lastFrameRate = 10.0;
  7.  
  8. @implementation AreaRule
  9.  
  10. DPSTimedEntry teNumber=0;
  11. static void calculate();
  12.  
  13. - init    
  14. {    [super init];
  15.     initTable(0, 0);
  16.     //if (c_xw > C_XW)
  17.         c_xw = C_XW;
  18.     //if (c_yh > C_YH)
  19.         c_yh = C_YH;
  20.     return self;
  21. }
  22.  
  23. void initTable(int phase, int dir)
  24. {    int i, v, k=dir? 1: -1;
  25.     static int lastPhase, lastDir=-5;
  26.     if (phase == lastPhase && dir == lastDir)
  27.         return;
  28.     lastPhase = phase;
  29.     lastDir = dir;
  30.     for (i=0; i<NsineTable; i++)
  31.     {    v = 7.499*(sin(2*i*M_PI/NsineTable) + 1.0);
  32.         redTable  [(i+phase +   0*NsineTable/3)%NsineTable] = v;
  33.         greenTable[(i+phase +   k*NsineTable/3)%NsineTable] = v;
  34.         blueTable [(i+phase + 2*k*NsineTable/3)%NsineTable] = v;
  35. }    }
  36.  
  37. - start:sender
  38. {    Self = self;
  39.     if (lastFrameRate <= 0)
  40.         intiTimedEntry(-lastFrameRate);
  41.     return self;
  42. }
  43.  
  44. void intiTimedEntry(float frameRate)
  45. {    if (frameRate == lastFrameRate)
  46.         return;
  47.     lastFrameRate = frameRate;
  48.     if (teNumber)
  49.         DPSRemoveTimedEntry(teNumber);
  50.     teNumber=DPSAddTimedEntry(1/lastFrameRate, calculate, (void *)0, 2);
  51. }
  52.  
  53. - stop:sender
  54. {    if (teNumber)
  55.     {    DPSRemoveTimedEntry(teNumber);
  56.         teNumber = 0;
  57.         lastFrameRate = -lastFrameRate;
  58.     }
  59.     return self;
  60. }
  61.  
  62. static void calculate(DPSTimedEntry teNumbr, double now, char *userData)
  63. {    [Self compute];
  64.     [Self display];
  65. }
  66.  
  67. - drawSelf:(const NXRect *)rects :(int)rectCount
  68. {    NXSetColor(NXConvertRGBAToColor(1.0, 1.0, 1.0,   1.0));
  69.     NXRectFill(&bounds);
  70.     return self;
  71. }
  72.  
  73. - Randomize :sender        {    return self;    }
  74. - (void)compute                    {}
  75.  
  76. @end
  77.